bitkeeper revision 1.1389.5.11 (4278fd69QwxUePkKl_WI29DSDv8_kA)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 4 May 2005 16:50:49 +0000 (16:50 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Wed, 4 May 2005 16:50:49 +0000 (16:50 +0000)
Fix MP-table parsing to correctly use ISA fixmap area.
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6.11-xen-sparse/arch/xen/i386/kernel/mpparse.c
linux-2.6.11-xen-sparse/arch/xen/i386/kernel/setup.c

index 94ab4fd89f4d1a996988ec276ce2181d27b8907c..8f701413a51db4a32313ede1060580eab5705d8c 100644 (file)
@@ -690,7 +690,7 @@ void __init get_smp_config (void)
                 * Read the physical hardware table.  Anything here will
                 * override the defaults.
                 */
-               if (!smp_read_mpc((void *)mpf->mpf_physptr)) {
+               if (!smp_read_mpc(isa_bus_to_virt(mpf->mpf_physptr))) {
                        smp_found_config = 0;
                        printk(KERN_ERR "BIOS bug, MP table errors detected!...\n");
                        printk(KERN_ERR "... disabling SMP support. (tell your hw vendor)\n");
@@ -743,7 +743,6 @@ static int __init smp_scan_config (unsigned long base, unsigned long length)
                        smp_found_config = 1;
                        printk(KERN_INFO "found SMP MP-table at %08lx\n",
                                                virt_to_phys(mpf));
-                       reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE);
                        if (mpf->mpf_physptr) {
                                /*
                                 * We cannot access to MPC table to compute
index 68950efa56fb5c1a7fca2573bd979573eebcd4d7..d4c55970012d5aa2789b3e2dcb68ca6e0bcca074 100644 (file)
@@ -1133,12 +1133,6 @@ static unsigned long __init setup_memory(void)
         */
        acpi_reserve_bootmem();
 #endif
-#ifdef CONFIG_X86_FIND_SMP_CONFIG
-       /*
-        * Find and reserve possible boot-time SMP configuration:
-        */
-       find_smp_config();
-#endif
 
 #ifdef CONFIG_BLK_DEV_INITRD
        if (xen_start_info.mod_start) {
@@ -1503,6 +1497,13 @@ void __init setup_arch(char **cmdline_p)
 #endif
        paging_init();
 
+#ifdef CONFIG_X86_FIND_SMP_CONFIG
+       /*
+        * Find and reserve possible boot-time SMP configuration:
+        */
+       find_smp_config();
+#endif
+
        /* Make sure we have a correctly sized P->M table. */
        if (max_pfn != xen_start_info.nr_pages) {
                phys_to_machine_mapping = alloc_bootmem_low_pages(